<template>
  <nav class="navbar-dark bg-primary justify-content-between mb-4 px-4">
    <div class="w-75 mx-auto navbar">
      <router-link class="navbar-brand" to="/">斩首的夜</router-link>
      <ul v-if="!user.isLogin" class="list-inline mb-0">
        <li class="list-inline-item">
          <router-link to="/login" class="btn btn-outline-light my-2">
            登录
          </router-link>
        </li>
        <li class="list-inline-item">
          <router-link to="/register" class="btn btn-outline-light my-2">
            注册
          </router-link>
        </li>
      </ul>
      <ul v-else class="list-inline mb-0">
        <li class="list-inline-item">
          <dropdown :title="`你好，${user.nickName}`">
            <dropdown-item>
              <router-link to="/create" class="dropdown-item">
                新建文章
              </router-link>
            </dropdown-item>
            <dropdown-item v-if="user.column">
              <router-link :to="`/column/${user.column}`" class="dropdown-item">
                我的专栏
              </router-link>
            </dropdown-item>
            <!-- TODO -->
            <!-- <dropdown-item disabled>
              <a href="#" class="dropdown-item">编辑资料</a>
            </dropdown-item> -->
            <dropdown-item>
              <a
                href="javascript:;"
                class="dropdown-item"
                @click.prevent="logout()"
              >
                退出登录
              </a>
            </dropdown-item>
          </dropdown>
        </li>
      </ul>
    </div>
  </nav>
</template>

<script lang='ts'>
import { defineComponent, PropType } from 'vue'
import Dropdown from './Dropdown.vue'
import DropdownItem from './DropdownItem.vue'
import { UserProps, GlobalDataProps } from '@/store'
import { useStore } from 'vuex'
import { useRouter } from 'vue-router'

export default defineComponent({
  name: 'GlobalHeader',
  components: {
    Dropdown,
    DropdownItem
  },
  props: {
    user: {
      type: Object as PropType<UserProps>,
      required: true
    }
  },
  setup () {
    const store = useStore<GlobalDataProps>()
    const router = useRouter()

    const logout = () => {
      store.commit('logout')
      router.replace({
        name: 'home'
      })
    }

    return {
      logout
    }
  }
})
</script>
